home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 05.zip
/
BS1 part 5
/
SASC_6.0_Disk_1.adf
/
READ.ME
< prev
next >
Wrap
Text File
|
1992-07-30
|
15KB
|
314 lines
*****************************************************************************
SAS/C Version 6.0 should be installed from the WorkBench. Double-click on
the "Install-SASC" icon to run the installation program if you have not
already done so.
*****************************************************************************
This read.me file contains major notes about changes to the product and
to the documentation. For a complete listing of all known errors in the
documentation, see the help file sc:help/sc_change.guide. If you installed
the on-line help, you can access this file through AmigaGuide as follows:
sc:c/amigaguide sc:help/sc_changes.guide
*****************************************************************************
A. GENERAL NOTES:
1. Since the compiler's executables are now AmigaDOS shared
libraries, they remain in memory after your compile
finishes. They will be automatically flushed out of
memory if they are not in use and some other program
needs the memory. However, if you run out of fast
memory, the operating system starts using chip memory
before flushing the libraries. Chip memory is much
slower than fast memory on Amigas with faster processors,
so this may slow down your program.
If you think this is happening to you, and you are running
AmigaDOS 2.0, use the AVAIL command as follows to flush any
shared libraries before running your program:
avail flush
2. New CPR option -nommu
The -nommu option can be specified for CPR and CPRK. It tells
CPR not to use the Memory Management Unit (MMU) for any reason.
This option is only relevant for users with a 68020 or greater CPU.
If your machine is running Enforcer and is 68020- or 68030-based,
CPR will try to use the MMU by default to stop references to illegal
memory. For these machines, the -nommu option tells CPR not to
verify memory in the MMU tables before trying to access it. However,
if Enforcer is running, you still will not be able to display illegal
memory.
On 68040 machines, CPR doesn't use the MMU tables, but rather uses
the TypeOfMem() call to determine if memory exists at that location.
CPR was modified to act this way because reading illegal memory on a
68040 may cause the machine to crash. Unfortunatly, this method does
not allow you to display ROM. For the 68040, the -nommu option
removes this restriction, allowing you to display ROM. However, care
should be taken in what memory is de-referenced or you could crash
your machine.
3. The format of bitfields has changed in version 6.0. If you have a
program that ran under version 5.10 or earlier that depends on the
order of bitfields, it will no longer work.
4. Several help files have been added to the SAS/C Amigaguide
help system. If you chose to install on-line help, all SAS/C help
files are located in the directory sc:help.
5. You may find the example program schelp in the sc:help/examples/cback
directory useful. schelp is a background process which will allow you
to hit control-Help to pop up the main help window for the SAS/C
Amigaguide help system. You will need to compile and link schelp
before you can use it. Read the read.me file in sc:examples/cback for
more information.
6. By default, when you include the file proto/exec.h you get "syscall"
pragmas for all exec.library functions. Another set of pragmas exists
for exec that use the "libcall" method via the library base SysBase.
Either set of pragmas will work. The "syscall" pragmas find the
address of exec.library by looking at memory location 4. The
"libcall" pragmas find it by looking at the external variable
"SysBase".
On Amigas with 68020 and higher processors, it is significantly faster
to use the "libcall" pragmas. To do this, define the preprocessor
symbol "__USE_SYSBASE" on the command line or by using a #define
statement. If you do this, make sure you include the file
<proto/exec.h> rather than <pragmas/exec_pragmas.h>. If you do this
and you are not using one of the SAS/C supplied startup modules, you
will have to initialize the variable SysBase yourself as follows:
struct ExecBase *SysBase = *(struct ExecBase **)4;
7. Two rexx macros were added after the documentation was completed.
They are sc:rexx/man.se and sc:rexx/man.cpr. To use these macros:
In CPR, type man <function> where <function> is any valid SAS/C
library function. This will automatically display a help screen
from the sc_lib.guide help file for that function.
In SE, place the cursor on the name of any valid SAS/C library
function and hit shift-help. This will automatically display a help
screen from the sc_lib.guide help file for that function.
B. CHANGES IN THE USER'S GUIDE, VOLUME I
1. Add the following to the end of the "Changes and Enhancements"
list on page xxviii, and to the description of the __interrupt
keyword on page 153:
Unlike previous versions of the compiler, the __interrupt
keyword does not imply that the function will be called
with stack arguments. If you use PARMS=REG and the function
must receive its parameters on the stack, add the __stdargs
keyword to its definition and prototype.
2. On page 257, the following line should be added to the explanation
for Error 625:
If you are specifying the link option, you need to include the
math= option to specify which math library with which you want
to link. If you are linking using SLink directly, you need to
link with a math library as well as sc.lib.
3. In the description of the OPTCOMPLEXITY, OPTDEPTH and OPTRDEPTH options
on pages 106-108, the default values for the three options are given
as 3. The defaults are actually 0. This means that by default the
global optimizer will not inline any functions unless they have been
explicitly declared with the __inline keyword.
C. CHANGES IN THE USER'S GUIDE, VOLUME II
1. On page 41, the first example of the "go" command reads
>go 4 when (i == 7)
this should read
>go 24 when(i == 7)
2. On page 76, the text mentions the fact that CPR will
by default open its own public screen, but it does
not give the name of this screen. Unless otherwise
specified with the -SCREEN option, CPR opens a
public screen called "SC_CPR.1".
3. On page 167, the description of the RESTART debugger
command states that watch breaks on static and external
data items will be retained after a RESTART. This does
not work if the program being debugged was linked with
the "cres" or "catchres" startup modules and the watch
break is set on an item in the near data section.
4. On page 247, in the description of the SCMSG command,
it states that SCMSG will be automatically invoked when
the compiler produces diagnostics. You must specify the
ERRORREXX option to tell the compiler to do this. If you
do not specify ERRORREXX, the SCMSG utility will not be
invoked.
5. On page 258, the SCSETUP utility is documented. Two new
options have been added to this utility, FORCE and NOSTARTER.
If FORCE is specified, SCSETUP copies icons and files into
the directory whether or not they already exist. Use this
option if you have a directory already set up for Version 5.10
of the compiler. The NOSTARTER option tells SCSETUP not to
copy the contents of the drawer SC:STARTER_PROJECT to the
directory being set up. Use this option to create icons for
files in a directory based on their extension when you do
not want the SCOptions, Edit, Debug and Build icons copied
into the directory.
6. On page 333, there is a table of compiler options used to
enable or disable the optimizers. Add the following entry
to this table:
Option Effect
-------- -------
optimize turns on only the peephole optimizer
nooptglobal
These options are discussed in more detail in Chapter 6
of the User's Guide, Volume I, along with the other
SC command-line options.
7. On page 43, in the second listing of example code, the 4 on the
third and fourth lines should be 24, as follows:
> go 24 when (i ==7)
sort:\Work:examples/sort.c\sort 24
8. On page 51, in the bottom example, the definition of the breakpoint
starting on the second line spans 2 input lines. You must place a
backslash (\) at the end of the first line.
> break sort 26 when (i > 5) {dump p L 4; \
break sort 26 when (i == 8) trace; blist}
9. On page 216, underscores are missing from two bulleted list items near
the middle of the page and from item 2 near the bottom.
These lines should read:
* The main routine must be called main rather than __main
because covutil.o replaces __main with an enhanced
version.
* Your program must end by calling exit or by falling
through the end of main. (Do not call _XCEXIT or abort,
for example.)
2. ...The covutil.o file replaces the __main and __exit
functions in your program with enhanced versions...
10. On pages 276 and 278, in the example smakefiles, data=absolute
should be data=far.
D. CHANGES IN THE LIBRARY REFERENCE MANUAL:
1. A set of correction pages has been included for use with
the Library Reference manual. Please be sure to apply
them to the manual as soon as possible.
2. The description of the "getenv" function on page 251 states
that only the first line of the file will be read. In reality,
the entire file is read.
3. The following external data names are not listed in the data
name reference (Chapter 6 of the Library Reference Manual):
long __STKNEED;
If your program uses the __stackext keyword or is compiled with
the STACKEXT compiler option, __STKNEED specifies the minimum
amount of stack required. Keep in mind that if a system interrupt
occurs, it will use your stack; therefore, you must keep at least
400 bytes of stack free at all times. The default value of
__STKNEED is 400. If your program requires more, declare
__STKNEED in your code and statically initialize it to the amount
you require. You may change the value of __STKNEED while your
program is running if you like; if the current stack does not
meet the new __STKNEED value, a new one will be allocated the
next time you call a function declared with the __stackext
keyword or compiled with the STACKEXT compiler option. For more
information on the __STKNEED external variable, see Chapter 11
of the User's Guide, volume I.
long __oslibversion;
If you use the auto-open feature for system libraries, the
autoinitialization code passes the value of this external long
integer to the OpenLibrary function when attempting to open
each library. For example, AmigaDOS 2.0 is library revision
37. If your program runs only under AmigaDOS 2.0, you can
declare it in your code as an external variable and initialize
it to 37. The autoopen libraries will not open if your program
is run under older versions of AmigaDOS; the library function
__autoopenfail will be called instead. For more information on
auto-open libraries, see Chapter 10 of the User's Guide, volume I.
char __stdiowin[] = "CON:10/10/320/80/";
If your program is invoked from Workbench, a console window
will be opened to allow the standard I/O streams stdin, stdout
and stderr to function. This variable specifies the character
string that will be passed to the AmigaDOS Open() function to
initialize this window. You may change this specification
to change the appearance or behavior of the window by
declaring the array as shown above external to any function
in your code. Under AmigaDOS 2.0, the array __stdiov37
will be appended to the __stdiowin string. For more information
on __stdiowin, see Chapter 9 of the User's Guide, Volume I.
char __stdiov37[] = "/AUTO/CLOSE/WAIT";
If your program is invoked from Workbench, a console window
will be opened to allow the standard I/O streams stdin, stdout
and stderr to function. This array will be appended to the
contents of the __stdiowin array if and only if the program
is invoked under kickstart version 37 or higher (AmigaDOS 2.0).
The AmigaDOS 2.0 console device supports special keywords that
enhance the behavior of the window. The default string
specifies that the window should open only if your program
actually reads or writes data to it; that the window should
have a close gadget; and that the window should wait for the
user to hit the close gadget or type an end-of-file character
before closing. You may change this specification if you like
by declaring the array as shown above external to any function
in your code. For more information on __stdiov37, see Chapter 9
of the User's Guide, Volume I.
__ctors and __dtors
__ctors and __dtors are linker-created symbols which are arrays of
autoinitialization and autotermination functions to be invoked when
your program is started or after it exits. Do not declare __ctors
or __dtors in your code. For more information on __ctors and
__dtors, see Chapter 10 of the User's Guide, Volume I.
4. The following should be added to Chapter 7 of the Library Reference
Manual:
void __autoopenfail(char *lib);
If you use the auto-open library feature for system libraries,
and one of the system libraries fails for some reason, the
function __autoopenfail will be called. The parameter "lib"
points to a null-terminated string giving the name of the
library which failed to open. The default version of this
function prints an error message and terminates your program.
You can declare a function matching the prototype above if
you like and replace the default version. The source code
to the default version of __autoopenfail is in the file
SC:SOURCE/autoopenfail.c. For more information on auto-open
libraries, see Chapter 10 of the User's Guide, volume I.